const storage = require('../../utils/storage.js');
const imageUtil = require('../../utils/image.js');
const api = require('../../utils/api.js');

Page({
  data: {
    userId: null,
    userName: '',
    selectedDate: '', // 选择的日期 YYYY-MM-DD
    formattedDate: '', // 显示的日期
    historyItems: [],
    loading: true,
    errorMessage: ''
  },

  onLoad(options) {
    console.log('📋 =============== 历史记录页面加载 ===============');
    console.log('📦 接收参数:', options);

    const userId = options.userId ? parseInt(options.userId) : null;
    const userName = options.userName || '';

    // 默认选择今天
    const today = new Date();
    const formattedDate = this.formatDate(today);

    this.setData({
      userId: userId,
      userName: userName,
      selectedDate: formattedDate,
      formattedDate: formattedDate
    });

    console.log('👤 用户ID:', userId);
    console.log('👤 用户名:', userName);
    console.log('📅 默认日期:', formattedDate);

    // 加载历史数据
    this.loadHistoryData();
  },

  /**
   * 格式化日期为 YYYY-MM-DD
   */
  formatDate(date) {
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
  },

  /**
   * 格式化时间显示 YYYY-MM-DD HH:mm
   * 🔥 修复iOS兼容性：将空格替换为T
   */
  formatTime(timeString) {
    try {
      // 🔥 修复iOS兼容性：将 "2025-10-04 18:20:00" 转为 "2025-10-04T18:20:00"
      const isoString = timeString.replace(' ', 'T');
      const date = new Date(isoString);
      
      // 检查日期是否有效
      if (isNaN(date.getTime())) {
        console.error('⚠️ 无效的日期格式:', timeString);
        return timeString;
      }
      
      const year = date.getFullYear();
      const month = String(date.getMonth() + 1).padStart(2, '0');
      const day = String(date.getDate()).padStart(2, '0');
      const hours = String(date.getHours()).padStart(2, '0');
      const minutes = String(date.getMinutes()).padStart(2, '0');
      return `${year}-${month}-${day} ${hours}:${minutes}`;
    } catch (e) {
      console.error('⚠️ 时间格式化失败:', e);
      return timeString;
    }
  },

  /**
   * 加载历史数据
   */
  loadHistoryData() {
    if (!this.data.userId) {
      this.setData({
        loading: false,
        errorMessage: '用户信息不完整'
      });
      return;
    }

    console.log('🔄 开始加载历史数据，日期:', this.data.selectedDate);

    this.setData({ loading: true, errorMessage: '' });

    wx.showLoading({ title: '加载中...', mask: true });

    // 🔥 调用历史记录接口
    api.getUserHistory(this.data.userId, this.data.selectedDate, 'all')
      .then(res => {
        console.log('✅ 历史数据加载成功:', res);

        if (res.status === 'success' && res.data && Array.isArray(res.data)) {
          console.log('📊 共加载 ' + res.data.length + ' 条历史记录');

          // 处理数据
          const formattedItems = res.data.map(item => this.formatHistoryItem(item));

          this.setData({
            historyItems: formattedItems,
            loading: false
          });
        } else {
          console.log('⚠️ 没有历史数据');
          this.setData({
            historyItems: [],
            loading: false
          });
        }
      })
      .catch(error => {
        console.error('❌ 历史数据加载失败:', error);
        this.setData({
          loading: false,
          errorMessage: error.message || '加载失败，请稍后重试',
          historyItems: []
        });

        wx.showToast({
          title: '加载失败',
          icon: 'none'
        });
      })
      .finally(() => {
        wx.hideLoading();
      });
  },

  /**
   * 格式化历史记录项
   */
  formatHistoryItem(item) {
    console.log('🎨 格式化历史记录原始数据:', item);

    // 🔥 直接使用API返回的字段名
    const formatted = {
      id: item.id,
      type: item.type || '活动',
      typeName: this.getTypeDisplayName(item.type || '活动'),
      typeColor: this.getTypeColor(item.type || '活动'),
      title: item.title || '无标题',
      content: item.content || '',
      location: item.location || '',
      publishTime: this.formatTime(item.createTime || item.publishTime),
      images: imageUtil.processActivityImages(item.images), // 🔥 使用图片工具类处理图片
      publisherNickname: item.publisherNickname || '未知用户',
      publisherAvatar: imageUtil.processAvatar(item.publisherAvatar), // 🔥 使用图片工具类处理头像
      category: item.category || [],
      // 活动特有字段
      isActivity: item.type === '活动',
      participantCount: item.currentParticipants,
      maxParticipants: item.maxParticipants,
      // 评论特有字段
      isComment: item.type === '评论',
      likeCount: item.likeCount,
      commentCount: item.commentCount
    };

    console.log('✅ 格式化后的数据:', {
      id: formatted.id,
      title: formatted.title,
      content: formatted.content,
      images: formatted.images,
      imagesLength: formatted.images.length
    });

    return formatted;
  },

  /**
   * 获取类型显示名称
   */
  getTypeDisplayName(type) {
    switch (type) {
      case '活动':
      case 'activity':
        return '活动';
      case '评论':
      case 'comment':
        return '评论';
      default:
        return '活动';
    }
  },

  /**
   * 获取类型颜色
   */
  getTypeColor(type) {
    switch (type) {
      case '活动':
      case 'activity':
        return '#D84545'; // 红色表示活动
      case '评论':
      case 'comment':
        return '#2196F3'; // 蓝色表示评论
      default:
        return '#D84545'; // 默认红色
    }
  },

  /**
   * 显示日期选择器
   */
  showDatePicker() {
    console.log('📅 显示日期选择器');

    const that = this;
    const today = new Date();
    const currentDate = this.data.selectedDate;

    // 微信小程序日期选择器
    wx.showActionSheet({
      itemList: ['选择日期'],
      success: (res) => {
        if (res.tapIndex === 0) {
          // 使用picker组件需要在wxml中定义，这里使用模态框输入
          wx.showModal({
            title: '选择日期',
            content: '当前日期: ' + currentDate,
            editable: true,
            placeholderText: 'YYYY-MM-DD',
            success: (res) => {
              if (res.confirm && res.content) {
                const inputDate = res.content.trim();
                // 验证日期格式
                if (/^\d{4}-\d{2}-\d{2}$/.test(inputDate)) {
                  that.updateSelectedDate(inputDate);
                } else {
                  wx.showToast({
                    title: '日期格式错误',
                    icon: 'none'
                  });
                }
              }
            }
          });
        }
      }
    });
  },

  /**
   * 更新选择的日期
   */
  updateSelectedDate(newDate) {
    console.log('📅 更新选择的日期:', newDate);

    this.setData({
      selectedDate: newDate,
      formattedDate: newDate
    });

    // 重新加载数据
    this.loadHistoryData();
  },

  /**
   * 日期选择器变化
   */
  onDateChange(e) {
    const selectedDate = e.detail.value;
    console.log('📅 日期选择器变化:', selectedDate);
    this.updateSelectedDate(selectedDate);
  },

  /**
   * 刷新数据
   */
  onRefresh() {
    console.log('🔄 刷新数据');
    this.loadHistoryData();
  },

  /**
   * 🔥 页面显示时 - 用于调试
   */
  onShow() {
    // 🔔 自动初始化通知组件
    const app = getApp();
    app.autoInitNotification();
    
    console.log('📊 历史记录页面显示');
    console.log('📋 当前历史数据数量:', this.data.historyItems.length);
    if (this.data.historyItems.length > 0) {
      console.log('📋 第一条数据:', this.data.historyItems[0]);
    }
  }
});

